package com.iflytek.ci.security;

import com.iflytek.jsec.cac.domain.Authority;
import com.iflytek.jsec.cac.domain.User;
import com.iflytek.jsec.cac.domain.UserInfo;

import javax.servlet.http.HttpSession;
import java.util.List;

/**
 * 权限处理业务类
 * 
 * @author quansun
 * @version $Id: BusinessSecurityManager.java 48736 2011-12-20 08:06:31Z hyzha $
 */
public interface BusinessSecurityManager {

    /**
     * 
     * ｛说明该函数的含义和作用，如果函数较为复杂，请详细说明｝
     * 
     * @return User
     * @author scrum
     * @created 2013-6-23 下午04:04:04
     * @lastModified
     * @history
     */
    public User getCurrentUser();

    /**
     * 
     * ｛说明该函数的含义和作用，如果函数较为复杂，请详细说明｝
     * 
     * @param session
     *            HttpSession对象
     * @return User
     * @author scrum
     * @created 2013-6-23 下午04:04:08
     * @lastModified
     * @history
     */
    public User getCurrentUser(HttpSession session);

    /**
     * 
     * ｛说明该函数的含义和作用，如果函数较为复杂，请详细说明｝
     * 
     * @param orgCode
     *            用户机构编码
     * @return List<User>
     * @author scrum
     * @created 2013-6-23 下午04:04:13
     * @lastModified
     * @history
     */
    List<User> getUsers(String orgCode);

    /**
     * 
     * ｛说明该函数的含义和作用，如果函数较为复杂，请详细说明｝
     * 
     * @param user
     *            User对象
     * @return String
     * @author scrum
     * @created 2013-6-23 下午04:04:17
     * @lastModified
     * @history
     */
    public String getRoleMcsOfUser(User user);

    /**
     * 
     * ｛说明该函数的含义和作用，如果函数较为复杂，请详细说明｝
     * 
     * @param userLoginName
     *            userLoginName
     * @return User
     * @author scrum
     * @created 2013-6-23 下午04:04:20
     * @lastModified
     * @history
     */
    public User getUserByLoginName(String userLoginName);

    /**
     * 
     * ｛说明该函数的含义和作用，如果函数较为复杂，请详细说明｝
     * 
     * @return List<Authority>
     * @author scrum
     * @created 2013-6-23 下午04:04:24
     * @lastModified
     * @history
     */
    public List<Authority> getFirstMenhuOfCurrentUser();

    /**
     * 
     * ｛说明该函数的含义和作用，如果函数较为复杂，请详细说明｝
     * 
     * @return String
     * @author scrum
     * @created 2013-6-23 下午04:04:28
     * @lastModified
     * @history
     */
    public String getFrameSetWebContext();

    /**
     * 
     * ｛说明该函数的含义和作用，如果函数较为复杂，请详细说明｝
     * 
     * @param session
     *            HttpSession对象
     * @return UserInfo
     * @author scrum
     * @created 2013-6-23 下午04:04:32
     * @lastModified
     * @history
     */
    public UserInfo getCurrentUserInfo(HttpSession session);

    /**
     * 
     * ｛说明该函数的含义和作用，如果函数较为复杂，请详细说明｝
     * 
     * @param userLoginName
     *            userLoginName
     * @return UserInfo
     * @author scrum
     * @created 2013-6-23 下午04:04:36
     * @lastModified
     * @history
     */
    public UserInfo getUserInfoByLoginName(String userLoginName);

    /**
     * 
     * ｛说明该函数的含义和作用，如果函数较为复杂，请详细说明｝
     * 
     * @param sfzh
     *            sfzh
     * @return User
     * @author scrum
     * @created 2013-6-23 下午04:04:39
     * @lastModified
     * @history
     */
    public User getUserBySfzh(String sfzh);

    /**
     * 
     * ｛说明该函数的含义和作用，如果函数较为复杂，请详细说明｝
     * 
     * @param user
     *            User对象
     * @param authName
     *            authName
     * @return boolean
     * @author scrum
     * @created 2013-6-23 下午04:04:45
     * @lastModified
     * @history
     */
    public boolean isUserHasAuth(User user, String authName);

    /**
     * 
     * ｛说明该函数的含义和作用，如果函数较为复杂，请详细说明｝
     * 
     * @param user
     *            User对象
     * @param roleId
     *            roleId
     * @return boolean
     * @author scrum
     * @created 2013-6-23 下午04:04:49
     * @lastModified
     * @history
     */
    public boolean isUserHasRole(User user, String roleId);

    /**
     * 
     * ｛说明该函数的含义和作用，如果函数较为复杂，请详细说明｝
     * 
     * @param menuName
     *            menuName
     * @return String
     * @author scrum
     * @created 2013-6-23 下午04:04:52
     * @lastModified
     * @history
     */
    public String getMenuByMenuName(String menuName);
}
